package com.hrbxlh.dao;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

@Repository
public interface SourceDao {
	
	/**
	 * @param pageNow,pageSize(一般是10)，页数从1开始，第一页pageNow传1
	 * @return  学生成绩列表页面。进页面，翻页，条件查询都是这个。
	 * @throws IOException
	 */
	 List<Map<String, Object>> getAllSourceList(Map<String,Object> paramMap) throws Exception;

	/**
	 * @param
	 * @return  学生成绩列表页面(未结课)
	 * @throws IOException
	 */
	 List<Map<String, Object>> getNoEndCourseAllSourceList(Map<String,Object> paramMap) throws Exception;
	
	/**
	 * @description 删除学生成绩的方法，传的是每个学生的id
	 * @param List<Integer> 人员id的集合
	 * @return 
	 * @throws Exception
	 */
	 boolean delSoruceBystuorteaId(List<Map<String, Object>> paramList) throws Exception;
	
	/**
	 * @description 假删除学生成绩的方法，传的是每个学生的id
	 * @param List<Integer> 人员id的集合
	 * @return 
	 * @throws Exception
	 */
	 boolean delStuSoruceBystuorteaId(List<Map<String,Object>> paramList) throws Exception;
	
	/**
	 * @description 假删除学生成绩的方法，传的是每个学生的id(删除学生)
	 * @param List<Integer> 人员id的集合
	 * @return 
	 * @throws Exception
	 */
	 boolean delStuSoruceBystuorteaIdStu(List<String> paramList) throws Exception;

	/**
	 * @description 通过学号删除学生提交试卷表 (删除学生)
	 * @param List<Integer> 人员id的集合
	 * @return
	 * @throws Exception
	 */
	 boolean delStustuquestionBystuorteaIdStu(List<String> paramList) throws Exception;
	
	/**
	 * @description 添加学生成绩的方法，传的是每个学生的id
	 * @param List<Integer> 人员id的集合
	 * @return 
	 * @throws Exception
	 */
	 boolean addSource(List<Map<String, Object>> param) throws Exception;

	/**
	 * @description 修改学生成绩的方法，传的是每个学生的id
	 * @param List<Integer> 人员id的集合
	 * @return
	 * @throws Exception
	 */
	 boolean updateSource(List<Map<String, Object>> param) throws Exception;
	
	/**
	 * @param paramMap
	 * @return  某个班级分数最高的学生。
	 * @throws IOException
	 */
	 List<Map<String, Object>> getMaxPreforSource(Map<String, Object> paramMap) throws Exception;
	
	/**
	 * @param paramMap
	 * @return  查看exam表是否有数据 。
	 * @throws IOException
	 */
	 List<Map<String, Object>> getExam() throws Exception;
	
	/**
	 * @param paramMap
	 * @return  查看source表中平时成绩的权重
	 * @throws IOException
	 */
	 Map<String, Object> getProWedith(Map<String, Object> paraMap) throws Exception;
	
	/**
	 * 成绩设置。
	 * @throws IOException
	 */
	 boolean addSorceSet(Map<String,Object> paramMap) throws Exception;
	
	/**
	 * 更改成绩设置。
	 * @throws IOException
	 */
	 boolean updateSorceSet(Map<String,Object> paramMap) throws Exception;
	
	/**
	 * @param paramMap
	 * @return  查看source表中平时成绩的权重
	 * @throws IOException
	 */
	 Map<String, Object> getExamBySidAndCourseId(Map<String,Object> paramMap) throws Exception;
	
	/**
	 * @param pageNow,pageSize(一般是10)，页数从1开始，第一页pageNow传1
	 * @return  学生成绩列表页面（学生）。进页面，翻页，条件查询都是这个。
	 * @throws IOException
	 */
	 List<Map<String, Object>> getStuAllSourceList(Map<String,Object> paramMap) throws Exception;
	
	/**
	 * @param 工号
	 * @return  查询改教师下的学生是否已经有成绩
	 * @throws IOException
	 */
	 List<Map<String, Object>> getExamByteaId(Map<String,Object> paramMap) throws Exception;

	/**
	 * @param 工号、班级id、课程id
	 * @return  查询某教师下的某班级下的某课程是否已经结课
	 * @throws IOException
	 */
	 List<Map<String, Object>> getIsEndClassByteaId(Map<String,Object> paramMap) throws Exception;
	
	/**
	 * @description 删除某教师的设置成绩
	 * @param Map<String,Object> map Id
	 * @return 
	 * @throws Exception
	 */
	 boolean delSorceSetById(Map<String, Object> param) throws Exception;
	
	/**
	 * 更改成绩设置。（重新计算总成绩）
	 * @throws IOException
	 */
	 boolean updateSorceBySId(Map<String,Object> paramMap) throws Exception;
	
	/**xzx
	 * @param 
	 * @return  查询当前班级当前课程相关学生的平时成绩(参数是班号、课程号)。
	 * @throws IOException
	 */
	 List<Map<String, Object>> getStuSourceList(Map<String,Object> paramMap) throws Exception;
	
	/**
	 * 插入成绩表，将学生考试成绩插入数据库（批阅试题）。
	 * @throws IOException
	 */
	 boolean addExamByMark(Map<String,Object> paramMap) throws Exception;
	
	/**
	 * 编辑成绩表，将学生考试成绩插入数据库（批阅试题）。
	 * @throws IOException
	 */
	 boolean updateSorceBySIdAndMark(Map<String,Object> paramMap) throws Exception;
	/**
	 * @param stuorteaId
	 * @return  教师所拥有未结课的课程列表
			* @throws IOException
	 */
	 List<Map<String, Object>> getCourseNoEndListByTeaId(Map<String,Object> paramMap) throws Exception;

	/**
	 * @param stuorteaId, courseId
	 * @return  查询当前教师所拥有的未结课班级下的学生列表
			* @throws IOException
	 */
	 List<Map<String, Object>> getCourseNoEndStuList(Map<String,Object> paramMap) throws Exception;
	
	/**
	 * xzx
	 * @description 修改某教师教的某课程的全部学生的平时分数
	 * @param paramMap 1)courseId
	 *                   2)degreeList 分数集合  taskSoruce 平时总分数  stuorteaId  学号
	 *
	 * */
	 void updateMyStuPerformaceDegree(Map<String, Object> paramMap) throws Exception;

	/**xzx
	 * @description 查询这个教师教的这个课的所有学生的有总成绩的结果信息（3部分分数）
	 * @param paramMap courseId stuorteaId教师Id
	 * */
	 List<Map<String, Object>> getMyStuDegreeByCouId(Map<String, Object> paramMap) throws Exception;

	/**
	 * xzx
	 * @description 批量修改exam表中的总分数，
	 * @param paramMap courseId stuorteaId  sumSource
	 * */
	 void saveExamSumDegreeUtil(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 通过课程id集合删除这个课程的所有等级信息
	 * @param
	 * */
	 void delSorceByCourseIds(List<String> list) throws Exception;

	/**
	 * @description 通过课程id集合删除onlinequestion表中的数据
	 * @param
	 * */
	 void delOnlineQuestionByCourseIds(List<String> list) throws Exception;

}
